package ExceptionDemo1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ExceptionDemo4 {
    public static void main(String[] args) {
        while (true) {
            try {
                test();
                System.out.println("输入年龄成功");
                break;
            } catch (AgeOutOfRangeException e) {
                // 处理年龄范围异常（业务规则错误）
                System.out.println("年龄范围错误：" + e.getMessage()+"，请重新输入");
            } catch (InputMismatchException e) {
                // 处理输入格式异常（输入非数字）
                System.out.println("输入格式错误：请输入有效的数字，重新输入");
                // 清除输入缓冲区，避免无限循环
                new Scanner(System.in);
            }
        }
    }

    public static void test() throws AgeOutOfRangeException {
        System.out.println("请输入你的年龄");
        Scanner sc = new Scanner(System.in);
        int age;
        try {
            age = sc.nextInt();
        } catch (InputMismatchException e) {
            // 将输入格式异常重新抛出
            throw e;
        }

        if (age < 0 || age > 100) {
            // 抛出自定义的年龄范围异常
            throw new AgeOutOfRangeException("年龄必须在0-100之间");
        }
    }
}
